#气温数据的分段线性插值与三次样条插值：

import numpy as np  #载入数值计算的库
import matplotlib.pyplot as plt  #载入画图的库
import scipy.interpolate as spi  #载入科学计算的插值函数库

x=np.arange(0,25,2)  #创建等差数组
y=np.array([12,9,9,10,18,24,28,27,25,20,18,15,13])  #输入数据
xnew=np.linspace(0,24,241)  #插值点横坐标（每小时取10个时间点）

f1=spi.interp1d(x,y)  #调用一维插值函数，参数默认为分段线性插值
y1=f1(xnew)    #分段线性插值得到的函数值
f2=spi.interp1d(x,y,'cubic')  #调用一维插值函数，参数为三次样条方法
y2=f2(xnew)    #三次样条插值得到的函数值

fig=plt.figure()  #创建一个图对象
ax1=fig.add_subplot(211)  #创建2行1列两个子图（轴）的第一个
ax1.plot(x,y,'o') #画出给定数据的散点图
ax1.plot(xnew,y1,'c-')  #把插值数据点连线
ax1.set_xlabel('Piece-wise Linear interpolation')  #设置子图的标题

ax2=fig.add_subplot(212)  #创建2行1列两个子图的第二个
ax2.plot(x,y,'o')  #画出给定数据的散点图
ax2.plot(xnew,y2,'c-')  #把插值数据点连线
ax2.set_xlabel('Spline interpolation')  #设置子图的标题

fig.tight_layout(h_pad=1)  #调整两个子图间的距离
fig.savefig('mme2024-example-7-4-b.png') #保存图像
